class MyPageHeader extends BaseList {
    constructor(orderby, flag, $pagesize, $pagination, listUrl, onLineEditUrl, checkBoxName) {
        super(orderby, flag, $pagesize, $pagination, listUrl, onLineEditUrl, checkBoxName);
        this.pagenavbar = $("#wrapper__navbar");
        this.limit = 15;
        this.selectedItemList = {};  // 选定的数据列表OnMultiChoice
    }
    OnPageLoad() {
        if (parseInt(this.flag) === 0) {
            // 如果是单选情况，那么隐藏【确定】按钮
            $("#ButOk").remove();
        }
        if (parseInt(this.flag) === 1) {
            // 设置全选框
            let html = '<label class="btn" for="checkall-header" style="margin-left:4px;">' +
                       '    <input id="checkall-header" type="checkbox" onclick="_InstancePageHeader.DoCheckAll($(this),\'_check_row_header\');" /><i></i><span></span>' +
                       '</label>';
            $("#th-checkall").text('');
            $(html).appendTo($("#th-checkall"));
        }
        this.pagination.attr("_msh_page", 1);
        this.FetchForPage(1);
    }
    GetFilter(pageIndex) {
        let item = super.GetFilter(pageIndex);
        item['CurrentUserId'] = parseInt(parent.$("#UserId").val());         // 当前操作者，用于过滤供应商分组
        item['PoNoFilterValue'] = formatNullInputValue($.trim($("#PoNoFilterValue").val()));
        item['SupplierNameFilterValue'] = $("#SupplierNameFilterValue").val();
        item['StyleNoFilterValue'] = formatNullInputValue($.trim($("#StyleNoFilterValue").val()));
        item['PurchasedByNameFilterValue'] = formatNullInputValue($.trim($("#PurchasedByNameFilterValue").val()));
        //item['CheckedStatus'] = 2;    // 只能是最终审核过的

        return JSON.stringify(item);
    }
    Search() {
        // 重新设置选择结果及清空明细
        //this.ReSetLines();
        this.selectedItemList = {};
        $("#checkall-header").prop("checked", false);
        this.FetchForPage(1);
    }
    FetchAll() {
        $("#PoNoFilterValue").val("");
        $("#StyleNoFilterValue").val("");
        $("#PurchasedByNameFilterValue").val("");
        this.pagination.attr("_msh_page", 1);
        this.FetchForPage(1);
        // 重新设置选择结果及清空明细
        //this.ReSetLines();
        this.selectedItemList = {};
        $("#checkall-header").prop("checked", false);
    }
    EmptyTableContent() {
        $("#tabData11 tbody").empty();
        this.pagination.attr("_msh_page", 1);
    }
    SetTableContent(result) {
        $("#tabData11 tbody").empty();
        let content_01 = '';
        this.rows = result.length;  // 设置表格中checkbox的数量为表格的行数
        this.numCheckbox = result.length;  // 设置表格中checkbox的数量为表格的行数
        for (let i = 0; i < result.length; i++) {
            content_01 = '<tr _mash_id="' + result[i].headerId + '">';
            if (parseInt(this.flag) === 0) {
                content_01 += '<td style="padding-left:7px;"><label class="btn" for="R-' + result[i].headerId + '"><input id="R-' + result[i].headerId + '" name="_check_row_header" type="radio" onclick="_InstancePageHeader.OnChoice($(this));" value="' + result[i].headerId + '"/><i></i><span></span></label></td>';
            } else {
                content_01 += '<td style="padding-left:7px;"><label class="btn" for="C-' + result[i].headerId + '"><input id="C-' + result[i].headerId + '" name="_check_row_header" type="checkbox" onclick="_InstancePageHeader.DoCheckRow($(this),$(\'#checkall-header\'));" value="' + result[i].headerId + '"/><i></i><span></span></label></td>';
            }
            content_01 += '<td>' + formatNullData(result[i].poNo) + '</td>';               // 合同号
            content_01 += '<td>' + formatNullData(result[i].styleNo) + '</td>';            // 合同款号
            content_01 += '<td>' + result[i].billTypeName + '</td>';                       // 合同类型
            content_01 += '<td>' + formatNullData(result[i].signedDate) + '</td>';         // 
            content_01 += '<td>' + formatNullData(result[i].orderArrivalDate) + '</td>';   //
            content_01 += '<td>' + formatNullData(result[i].supplierName) + '</td>';       // 供应商名称
            content_01 += '<td>' + formatNullData(result[i].purchasedByName) + '</td>';    // 采购担当
            content_01 += '<td style="border-right:none; text-overflow:ellipsis;" title="' + formatNullData(result[i].description) + '">' + formatNullData(result[i].description) + '</td>';        // 备注
            content_01 += '</tr>';

            $("#tabData11 tbody").append(content_01);
            content_01 = '';
        }
        setOneTableRowColor("tabData11");
        this.ResetSelectRowStatus();  // 恢复选定结果
    }
    DoCheckRow($self, $checkall) {
        let _name = "input[type='checkbox'][name='" + this.checkBoxName + "']:checked";
        let _checkedRows = $(_name).length;
        if (_checkedRows < this.numCheckbox) {
            $checkall.prop("checked", false);
        } else {
            $checkall.prop("checked", true);
        }
        this.SetRowStatus($self);
    }
    // 设置行选择后的状态
    SetRowStatus($self) {
        super.AdjustRowStatus($self, ($row, index) => {
            let key = $self.val();
            let item = {};
            // 为翻页选择做准备
            item["PoHeaderId"] = key;
            item["PoNo"] = $.trim($row.find('td').eq(1).text());
            this.selectedItemList[key] = item;
        }, ($row, index) => {
            let key = $self.val();
            delete this.selectedItemList[key];
        });
    }
    // 每次翻页都恢复选定结果
    ResetSelectRowStatus() {
        let _this = this;
        $("#tabData11 tbody").find("tr").each(function (index) {
            let key = $(this).attr("_mash_id");
            if (_this.selectedItemList[key] !== undefined) {
                $(this).children("td").eq(0).children("label").eq(0).children("input[type='checkbox'][name='_check_row_header']").eq(0).prop('checked', true);
                $(this).addClass("row__selected");
            }
        });
        // 设置选择全部的状态
        let n = $("input[type='checkbox'][name='_check_row_header']:checked").length;
        if (n < $("#tabData11 tbody").find("tr").length || n === 0) {
            $("#checkall-header").prop("checked", false);
        } else {
            $("#checkall-header").prop("checked", true);
        }
    }
    // 选择后执行的动作
    SetChoiceData($self) {
        // 设置选择结果
        let $row = $self.parent().parent().parent();
        // 返回选择结果 id、name、no
        return new Array($self.val(), $row.find('td').eq(2).text(), $row.find('td').eq(1).text());
    }
    SortTable(orderBy) {
        this.orderby = orderBy;
        // 得到排序数据
        this.FetchForPage(1);
    }
}

let _InstancePageHeader = null;

//-----------------------------------------------------------------------------
// 页面初始化
//-----------------------------------------------------------------------------
function onPageReady() {
    // 从url得到相关参数
    flag = jQuery.url.param("flag") === undefined ? null : jQuery.url.param("flag");
    // 设置供应商过滤
    $("#SupplierNameFilterValue").val(parent.$("#SupplierName").val());

    _InstancePageHeader = new MyPageHeader(null, flag, null, $("#page_indicator_block"),
            "/purchase/po/header/fetchForPage.html", null, "_check_row_header");

    // 设置分页控制 （操作区域）
    $("#wrapper__navbar").swPagination({
        link_string: '/?page={page_number}',
        max_page: null,
        paged: function (page) {
            $("#page_indicator_block").attr("_msh_page", page);
            _InstancePageHeader.FetchForPage(page);
        }
    });
    SetSearchWnd();

    _InstancePageHeader.OnPageLoad();
}

// 画面大小或者位置移动
function onPageResize() {
}

function SetSearchWnd() {
    $("div.search").unbind('keyup');
    
    let clazz = 'search--active';
    // 设置引入订单表头的搜索
    let $search_02 = $('#search_02');
    // 搜索按钮
    $('#search_btn_02').on('click', function (event) {
        $search_02.addClass(clazz);
        $search_02.on(window.transitionProp, function (event) {
            $search_02.find('input').first().focus();
        });
    });
    // 搜索窗口关闭
    $('#search__form_butclose_02').on('click', function (event) {
        $search_02.removeClass(clazz);
    });
    // 搜索框回车直接进行搜索
    $("#search_02").bind('keyup', function (e) {
        let key = e.keyCode;
        if (key === 13) {
            $("#but_filter_02").click();
        }
    });
}